package com.fx.demo.common.resulUtils;


/**
 * 返回结果工具类
 */
public class ResultUtil {
    /**页数，需要哪一页的数据，从1开始*/
    private final static int defaultPageNum =1;
    /**单页数据几条数据*/
    private final static int defaultPageSize=10;
    /**数据总条数，-1表示未知*/
    private final static int defaultTotle=-1;

    /**
     *
     * @param pageNum 页数，需要哪一页的数据
     * @param pageSize 页长
     * @param totle 总量
     * @param orderColumn 排序项
     * @param data 数据
     * @param resultStatus 结果状态
     * @param <T>
     * @return
     */
    public static<T> AjaxResult<T> succ(int pageNum, int pageSize, int totle,String orderColumn, T data, ResultStatus resultStatus){
        return new AjaxResult<T>(pageNum,pageSize,totle,data, resultStatus.getCode(),resultStatus.getMessage(),true,orderColumn);
    }

    /**
     *
     * @param pageNum 页数，需要哪一页的数据
     * @param pageSize
     * @param totle
     * @param orderColumn
     * @param data
     * @param <T>
     * @return
     */
    public static<T> AjaxResult<T> succ(int pageNum,int pageSize,int totle,String orderColumn,T data){
        return succ(pageNum,pageSize,totle,orderColumn,data,ResultStatus.SUCC);
    }

    /**
     *
     * @param data
     * @param resultStatus
     * @param <T>
     * @return
     */
    public static<T> AjaxResult<T> succ(T data,ResultStatus resultStatus){
        return succ(defaultPageNum,defaultPageSize,defaultTotle,null,data,resultStatus);
    }

    /**
     *
     * @param data
     * @param <T>
     * @return
     */
    public static<T> AjaxResult<T> succ(T data){
        return succ(data, ResultStatus.SUCC);
    }

    /**
     *
     * @param <T>
     * @return
     */
    public static<T> AjaxResult<T> succ(){
        return succ(null, ResultStatus.SUCC);
    }

    /**
     *
     * @param msg
     * @param <T>
     * @return
     */
    public static<T> AjaxResult<T> succ(String msg){
        return new AjaxResult<T>(defaultPageNum, defaultPageNum,defaultTotle,null, ResultStatus.SUCC_OTHER.getCode(),msg,true,null);
    }

    /**
     *
     * @param resultStatus
     * @param <T>
     * @return
     */
    public static<T> AjaxResult<T> error(ResultStatus resultStatus){
        return new AjaxResult<T>(defaultPageNum,defaultPageSize,defaultTotle,null, resultStatus.getCode(),resultStatus.getMessage(),false,null);
    }

    /**
     *
     * @param <T>
     * @return
     */
    public static<T> AjaxResult<T> error(){
        return error(ResultStatus.ERROR);
    }

    /**
     *
     * @param msg
     * @param <T>
     * @return
     */
    public static<T> AjaxResult<T> error(String msg){
        return new AjaxResult<T>(defaultPageNum,defaultPageSize,defaultTotle,null, ResultStatus.ERROR_OTHER.getCode(),msg,false,null);
    }
}